Fail-Close Mode
Until a group member registers with a key server, traffic passing through the group member is not encrypted. This state is called “fail open.” To prevent unencrypted traffic from passing through a group member before that member is registered, you can configure the Fail-Close feature. If the feature is configured, an implicit “permit ip any any” policy is installed, and all unencrypted traffic passing through the group member is dropped (this state is called fail-close mode).
- Group Encrypted Transport
- Cisco Proprietary
- Compnents:
- GDOI (Group Domain of Interpretation) [RFC 3547]
- It is a protocol used to share keys
- It runs on protocol UDP 848
- ISAKMP Phase 1 protects GDOI
- GDOI has 2 keys:
- Key Encryption Key (KEK) [KS --> GM]
- Traffic Encryption Key (TEK) [GM <--> GM]
- Key Servers (KS)
- It generates Keys for encryption
- It is used for policy generation, which guides as to which traffic needs to be encrypted and what encryption algorithm to use
- Group Member (GM)
- Rekeying
- It is a process of retransmission of keys by Key Server
- There are 2 types:
- Unicast: Where KS sends keys to GM and GM replies with ACK
- Multicast: Where KS sends keys to multicast address 239.0.0.0 and GMs registered to that address receives it. No ACK!
- Time based Anti Replay
- It is a mechanism to prevent Replay attack
- It uses metadata to create a psuedo clock which times the time between transmission and reception.
- IPSec sequence number technique does not work because in GET VPN a group SA is formed and the communication happens with multiple GM's and the sequence numbers will not be continuous
- IP Header preservation makes a copy of the Tunnel IP header and uses it in the IP (Hence not suitable on the Internet, to be used only on WAN.
TASK: Configure GET VPN for the topology given below:
- Please do the initial configuration on the routers by assigning ip addresses as shown above
- Please define static routes on all the devices such that R3 and R4 should know the R1 ip address of 10.1.12.1 (Key Server) and should use R2 as the next hop to reach each other's loopback address
- Please note: Due to the IP Address preservation property of GET VPN (as defined above), R2 needs to know routes to the loopbacks of R3 and R4
Let us first start with Key Server Configuration
First let us generate an RSA 1024 length key
- R1(config)# ip domain-name cisco.com
- R1(config)# crypto key generate rsa modulus 1024 label GET_KEY
Now let us start configuration for Phase 1 - ISAKMP Policy
- R1(config)# crypto isakmp policy 10
- R1(isakmp-policy)# authentication pre-share
- R1(config)# crypto isakmp key 0 GET_R3 address 10.1.23.3
- R1(config)# crypto isakmp key 0 GET_R4 address 10.1.24.4
Now let us configure the Phase 2 - IPSec Transformset and Profile
- R1(config)# crypto ipsec transform-set TSET esp-3des esp-sha-hmac
- R1(config)# crypto ipsec profile GET_PRO
- R1(ipsec-profile)# set transform-set TSET
Now it is time to configure the Key Server
- R1(config)# crypto gdoi group GET_VPN
- R1(config-gdoi-group)# identity number 134
- R1(config-gdoi-group)# server local // At this point the GDOI will get enabled
- R1(gdoi-local-server)# rekey authentication mypubkey rsa GET_KEY
- R1(gdoi-local-server)# rekey retransmit 10 number 2
- R1(gdoi-local-server)# rekey transport unicast
- R1(gdoi-local-server)# authorization address ipv4 GM-LIST // A standard ACL with a list of Group Member's IP Address
- R1(gdoi-local-server)# address ipv4 10.1.12.1 // Key Server's IP Address
- R1(gdoi-local-server)# sa ipsec 1
- R1(gdoi-sa-ipsec)# profile GET_PRO
- R1(gdoi-sa-ipsec)# match address ipv4 LAN_LIST // The extended ACL controlling traffic (to be encrypted or not)
- R1(gdoi-sa-ipsec)# replay counter window-size 64
- R1(config)# ip access-list standard GM_LIST
- R1(config-std-nacl)# permit 10.1.23.3
- R1(config-std-nacl)# permit 10.1.24.4
- R1(config)# ip access-list extended LAN_LIST
- R1(config-ext-nacl)# deny udp any eq 848 any eq 848 // Telling the GM's not to encrypt traffic between GM and KS
- R1(config-ext-nacl)# permit ip 192.168.0.0 0.0.255.255 192.168.0.0 0.0.255.255 // The interesting traffic between loopbacks of GMs
Now let us configure the Group Member
Please Note: The beauty of GET VPN is that the configuration on all the GMs are identical! The only change in configuration is for the peer password. In the following commands 'Rx' denotes both R3 and R4.
- Rx(config)# crypto isakmp policy 10
- Rx(isakmp-policy)# authentication pre-share
- R3(config)# crypto isakmp key 0 GET_R3 address 10.1.12.1
- OR
- R4(config)# crypto isakmp key 0 GET_R4 address 10.1.12.1
- Rx(config)# crypto gdoi group GET_VPN
- Rx(config-gdoi-group)# identity number 134
- Rx(config-gdoi-group)# server address ipv4 10.1.12.1
- Rx(config)# crypto map CMAP 10 gdoi
- Rx(config-crypto-map)# set group GET_VPN
- Rx(config)# interface f0/0
- Rx(config-if)# crypto map CMAP // As soon as you apply the map to the interface, GDOI negotiation will happen with the KS as shown in syslog
Verification Commands
R1#sh crypto gdoi group GET_VPN
Group Name :
GET_VPN (Unicast)
Group Identity : 134
Group Members : 2
IPSec SA Direction : Both
Active Group Server : Local
Group Rekey Lifetime : 86400 secs
Group Rekey
Remaining Lifetime : 82712 secs
Rekey Retransmit Period : 10 secs
Rekey Retransmit Attempts: 2
Group Retransmit
Remaining Lifetime : 0 secs
IPSec SA Number : 134
IPSec SA Rekey Lifetime: 3600 secs
Profile Name : GET_PRO
Replay method : Count Based
Replay Window Size : 64
SA Rekey
Remaining Lifetime : 2375 secs
ACL Configured : access-list LAN_LIST
Group Server list : Local
R1# sh cry isa sa
IPv4 Crypto ISAKMP SA
dst src state conn-id slot status
10.1.12.1 10.1.23.3 GDOI_IDLE 1006 0 ACTIVE
10.1.12.1 10.1.24.4 GDOI_IDLE 1007 0 ACTIVE
IPv6 Crypto ISAKMP SA
R1#sh cry ips sa
No SAs found // This is because there is no encrypted traffic between KS and GM
R3# sh cry isa sa
IPv4 Crypto ISAKMP SA
dst src state conn-id slot status
10.1.12.1 10.1.23.3 GDOI_IDLE 1006 0 ACTIVE
IPv6 Crypto ISAKMP SA
R4# sh cry isa sa
IPv4 Crypto ISAKMP SA
dst src state conn-id slot status
10.1.12.1 10.1.24.4 GDOI_IDLE 1007 0 ACTIVE
IPv6 Crypto ISAKMP SA
TASK: Configure GET VPN for the topology with ASA as given below:

- Make the initial configurations of the IP addresses as shown
- GM1, GM2 and GM3 should know the route to reach 100.1.1.100 of KS. Open respective ACLs in ASA for UDP 848 (GDOI)
- All the GMs should use ASA as the next hop for the other GM's loopback and ASA should know the routes to all the loopbacks
- PLEASE NOTE: Normally with ASA and VPN, we have 2 critical ACLs: UDP 500 (ISAKMP) and ESP. In GET VPN, UDP 500 is mutated to UDP 848 (GDOI). Hence we do not need an ACL for UDP 500!
Let us first start with Key Server Configuration
First let us generate an RSA 1024 length key
- KS(config)# ip domain-name cisco.com
- KS(config)# crypto key generate rsa modulus 1024 label GET_KEY
Now let us start configuration for Phase 1 - ISAKMP Policy
- KS(config)# crypto isakmp policy 10
- KS(isakmp-policy)# authentication pre-share
- KS(config)# crypto isakmp key 0 GET_GM1 address 10.1.1.1
- KS(config)# crypto isakmp key 0 GET_GM2 address 20.1.1.2
- KS(config)# crypto isakmp key 0 GET_GM3 address 30.1.1.3
Now let us configure the Phase 2 - IPSec Transformset and Profile
- KS (config)# crypto ipsec transform-set TSET esp-3des esp-sha-hmac
- KS (config)# crypto ipsec profile GET_PRO
- KS (ipsec-profile)# set transform-set TSET
Now it is time to configure the Key Server
- KS (config)# crypto gdoi group GET_VPN
- KS (config-gdoi-group)# identity number 123
- KS (config-gdoi-group)# server local // At this point the GDOI will get enabled
- KS (gdoi-local-server)# rekey authentication mypubkey rsa GET_KEY
- KS (gdoi-local-server)# rekey retransmit 10 number 2
- KS (gdoi-local-server)# rekey transport unicast
- KS (gdoi-local-server)# authorization address ipv4 GM-LIST // A standard ACL with a list of Group Member's IP Address
- KS (gdoi-local-server)# address ipv4 100.1.1.100 // Key Server's IP Address
- KS (gdoi-local-server)# sa ipsec 1
- KS (gdoi-sa-ipsec)# profile GET_PRO
- KS (gdoi-sa-ipsec)# match address ipv4 LAN_LIST // The extended ACL controlling traffic (to be encrypted or not)
- KS (gdoi-sa-ipsec)# replay counter window-size 64
- KS (config)# ip access-list standard GM_LIST
- KS (config-std-nacl)# permit 10.1.1.1
- KS (config-std-nacl)# permit 20.1.1.2
- KS (config-std-nacl)# permit 30.1.1.3
- KS (config)# ip access-list extended LAN_LIST
- KS (config-ext-nacl)# deny udp any eq 848 any eq 848 // Telling the GM's not to encrypt traffic between GM and KS
- KS (config-ext-nacl)# permit ip 192.168.0.0 0.0.255.255 192.168.0.0 0.0.255.255 // The interesting traffic between loopbacks of GMs
Now let us configure the Group Member
Please Note: The beauty of GET VPN is that the configuration on all the GMs are identical! The only change in configuration is for the peer password. In the following commands 'GMx' denotes both GM1, GM2 and GM3.
- GMx(config)# crypto isakmp policy 10
- GMx(isakmp-policy)# authentication pre-share
- GM1(config)# crypto isakmp key 0 GET_GM1 address 100.1.1.100
- OR
- GM2(config)# crypto isakmp key 0 GET_GM2 address 100.1.1.100
- OR
- GM3(config)# crypto isakmp key 0 GET_GM3 address 100.1.1.100
- GMx(config)# crypto gdoi group GET_VPN
- GMx(config-gdoi-group)# identity number 123
- GMx(config-gdoi-group)# server address ipv4 10.1.12.1
- GMx(config)# crypto map CMAP 10 gdoi
- GMx(config-crypto-map)# set group GET_VPN
- GMx(config)# interface f0/0
- GMx(config-if)# crypto map CMAP // As soon as you apply the map to the interface, GDOI negotiation will happen with the KS as shown in syslog
Please make sure you have the following Access Lists in the ASA:access-list OUT1_IN extended permit udp host 10.1.1.1 eq 848 host 100.1.1.100 eq 848
access-list OUT1_IN extended permit esp host 192.168.1.1 any
access-list OUT2_IN extended permit udp host 20.1.1.2 eq 848 host 100.1.1.100 eq 848
access-list OUT2_IN extended permit esp host 192.168.2.2 any
access-list OUT3_IN extended permit udp host 30.1.1.3 eq 848 host 100.1.1.100 eq 848
access-list OUT3_IN extended permit esp host 192.168.3.3 any
And the following Access Groups:
access-group OUT1_IN in interface OUTSIDE1
access-group OUT2_IN in interface OUTSIDE2
access-group OUT3_IN in interface OUTSIDE3
KEK resend and delete of GM registrations.JPG